#ifndef PLAN_H
#define PLAN_H

/********** Library Includes **************************************************/

#include <opencv/cv.h>

/********** Forward Class Declarations ****************************************/

class CellDecompAStar;

/********** Classes ***********************************************************/

class Plan {
public:
	explicit Plan(const cv::Mat &grid);
	
	void buildPlan(const cv::Point &start, const cv::Point &goal, int blockSize);
	bool done();
	cv::Point target();
	void advance();
	std::vector<cv::Point> plan();
	int step();
	cv::Point goal();

private:
	cv::Mat m_grid;
	CellDecompAStar *m_astar;
	std::vector<cv::Point> m_path;
	size_t m_step;
	cv::Point m_start;
	cv::Point m_goal;
};

#endif